//package com.hu.uitl;
//
//import java.io.*;
//import java.net.HttpURLConnection;
//import java.net.Socket;
//import java.net.URL;
//import java.net.URLConnection;
//import java.net.URLEncoder;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.List;
//import java.util.Map;
//import java.util.Map.Entry;
//
//import org.apache.http.HttpResponse;
//import org.apache.http.NameValuePair;
//import org.apache.http.client.HttpClient;
//import org.apache.http.client.entity.UrlEncodedFormEntity;
//import org.apache.http.client.methods.HttpGet;
//import org.apache.http.client.methods.HttpPost;
//import org.apache.http.impl.client.DefaultHttpClient;
//import org.apache.http.message.BasicNameValuePair;
//
///**
// * @Description:发送http请求帮助类
// * @author:liuyc
// * @time:2016年5月17日 下午3:25:32
// */
//public class SendUrl {
//    /**
//     * @Description:使用HttpURLConnection发送post请求
//     * @author:liuyc
//     * @time:2016年5月17日 下午3:26:07
//     */
//    public static String sendPost(String urlParam, Map<String, Object> params, String charset) {
//        StringBuffer resultBuffer = null;
//        // 构建请求参数
//        StringBuffer sbParams = new StringBuffer();
//        if (params != null && params.size() > 0) {
//            for (Entry<String, Object> e : params.entrySet()) {
//                sbParams.append(e.getKey());
//                sbParams.append("=");
//                sbParams.append(e.getValue());
//                sbParams.append("&");
//            }
//        }
//        HttpURLConnection con = null;
//        OutputStreamWriter osw = null;
//        BufferedReader br = null;
//        // 发送请求
//        try {
//            URL url = new URL(urlParam);
//            con = (HttpURLConnection) url.openConnection();
//            con.setRequestMethod("POST");
//            con.setDoOutput(true);
//            con.setDoInput(true);
//            con.setUseCaches(false);
//            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//            if (sbParams != null && sbParams.length() > 0) {
//                osw = new OutputStreamWriter(con.getOutputStream(), charset);
//                osw.write(sbParams.substring(0, sbParams.length() - 1));
//                osw.flush();
//            }
//            // 读取返回内容
//            resultBuffer = new StringBuffer();
//            int contentLength = Integer.parseInt(con.getHeaderField("Content-Length"));
//            if (contentLength > 0) {
//                br = new BufferedReader(new InputStreamReader(con.getInputStream(), charset));
//                String temp;
//                while ((temp = br.readLine()) != null) {
//                    resultBuffer.append(temp);
//                }
//            }
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (osw != null) {
//                try {
//                    osw.close();
//                } catch (IOException e) {
//                    osw = null;
//                    throw new RuntimeException(e);
//                } finally {
//                    if (con != null) {
//                        con.disconnect();
//                        con = null;
//                    }
//                }
//            }
//            if (br != null) {
//                try {
//                    br.close();
//                } catch (IOException e) {
//                    br = null;
//                    throw new RuntimeException(e);
//                } finally {
//                    if (con != null) {
//                        con.disconnect();
//                        con = null;
//                    }
//                }
//            }
//        }
//
//        return resultBuffer.toString();
//    }
//
//    /**
//     * @Description:使用URLConnection发送post
//     * @author:liuyc
//     * @time:2016年5月17日 下午3:26:52
//     */
//    public static String sendPost2(String urlParam, Map<String, Object> params, String charset) {
//        StringBuffer resultBuffer = null;
//        // 构建请求参数
//        StringBuffer sbParams = new StringBuffer();
//        if (params != null && params.size() > 0) {
//            for (Entry<String, Object> e : params.entrySet()) {
//                sbParams.append(e.getKey());
//                sbParams.append("=");
//                sbParams.append(e.getValue());
//                sbParams.append("&");
//            }
//        }
//        URLConnection con = null;
//        OutputStreamWriter osw = null;
//        BufferedReader br = null;
//        try {
//            URL realUrl = new URL(urlParam);
//            // 打开和URL之间的连接
//            con = realUrl.openConnection();
//            // 设置通用的请求属性
//            con.setRequestProperty("accept", "*/*");
//            con.setRequestProperty("connection", "Keep-Alive");
//            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//            con.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//            // 发送POST请求必须设置如下两行
//            con.setDoOutput(true);
//            con.setDoInput(true);
//            // 获取URLConnection对象对应的输出流
//            osw = new OutputStreamWriter(con.getOutputStream(), charset);
//            if (sbParams != null && sbParams.length() > 0) {
//                // 发送请求参数
//                osw.write(sbParams.substring(0, sbParams.length() - 1));
//                // flush输出流的缓冲
//                osw.flush();
//            }
//            // 定义BufferedReader输入流来读取URL的响应
//            resultBuffer = new StringBuffer();
//            int contentLength = Integer.parseInt(con.getHeaderField("Content-Length"));
//            if (contentLength > 0) {
//                br = new BufferedReader(new InputStreamReader(con.getInputStream(), charset));
//                String temp;
//                while ((temp = br.readLine()) != null) {
//                    resultBuffer.append(temp);
//                }
//            }
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (osw != null) {
//                try {
//                    osw.close();
//                } catch (IOException e) {
//                    osw = null;
//                    throw new RuntimeException(e);
//                }
//            }
//            if (br != null) {
//                try {
//                    br.close();
//                } catch (IOException e) {
//                    br = null;
//                    throw new RuntimeException(e);
//                }
//            }
//        }
//        return resultBuffer.toString();
//    }
//
//    /**
//     * @Description:发送get请求保存下载文件
//     * @author:liuyc
//     * @time:2016年5月17日 下午3:27:29
//     */
//    public static void sendGetAndSaveFile(String urlParam, Map<String, Object> params, String fileSavePath) {
//        // 构建请求参数
//        StringBuffer sbParams = new StringBuffer();
//        if (params != null && params.size() > 0) {
//            for (Entry<String, Object> entry : params.entrySet()) {
//                sbParams.append(entry.getKey());
//                sbParams.append("=");
//                sbParams.append(entry.getValue());
//                sbParams.append("&");
//            }
//        }
//        HttpURLConnection con = null;
//        BufferedReader br = null;
//        FileOutputStream os = null;
//        try {
//            URL url = null;
//            if (sbParams != null && sbParams.length() > 0) {
//                url = new URL(urlParam + "?" + sbParams.substring(0, sbParams.length() - 1));
//            } else {
//                url = new URL(urlParam);
//            }
//            con = (HttpURLConnection) url.openConnection();
//            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//            con.connect();
//            InputStream is = con.getInputStream();
//            os = new FileOutputStream(fileSavePath);
//            byte buf[] = new byte[1024];
//            int count = 0;
//            while ((count = is.read(buf)) != -1) {
//                os.write(buf, 0, count);
//            }
//            os.flush();
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (os != null) {
//                try {
//                    os.close();
//                } catch (IOException e) {
//                    os = null;
//                    throw new RuntimeException(e);
//                } finally {
//                    if (con != null) {
//                        con.disconnect();
//                        con = null;
//                    }
//                }
//            }
//            if (br != null) {
//                try {
//                    br.close();
//                } catch (IOException e) {
//                    br = null;
//                    throw new RuntimeException(e);
//                } finally {
//                    if (con != null) {
//                        con.disconnect();
//                        con = null;
//                    }
//                }
//            }
//        }
//    }
//
//    /**
//     * @Description:使用HttpURLConnection发送get请求
//     * @author:liuyc
//     * @time:2016年5月17日 下午3:27:29
//     */
//    public static String sendGet(String urlParam, Map<String, Object> params, String charset) {
//        StringBuffer resultBuffer = null;
//        // 构建请求参数
//        StringBuffer sbParams = new StringBuffer();
//        if (params != null && params.size() > 0) {
//            for (Entry<String, Object> entry : params.entrySet()) {
//                sbParams.append(entry.getKey());
//                sbParams.append("=");
//                sbParams.append(entry.getValue());
//                sbParams.append("&");
//            }
//        }
//        HttpURLConnection con = null;
//        BufferedReader br = null;
//        try {
//            URL url = null;
//            if (sbParams != null && sbParams.length() > 0) {
//                url = new URL(urlParam + "?" + sbParams.substring(0, sbParams.length() - 1));
//            } else {
//                url = new URL(urlParam);
//            }
//            con = (HttpURLConnection) url.openConnection();
//            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//            con.connect();
//            resultBuffer = new StringBuffer();
//            br = new BufferedReader(new InputStreamReader(con.getInputStream(), charset));
//            String temp;
//            while ((temp = br.readLine()) != null) {
//                resultBuffer.append(temp);
//            }
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (br != null) {
//                try {
//                    br.close();
//                } catch (IOException e) {
//                    br = null;
//                    throw new RuntimeException(e);
//                } finally {
//                    if (con != null) {
//                        con.disconnect();
//                        con = null;
//                    }
//                }
//            }
//        }
//        return resultBuffer.toString();
//    }
//
//    /**
//     * @Description:使用URLConnection发送get请求
//     * @author:liuyc
//     * @time:2016年5月17日 下午3:27:58
//     */
//    public static String sendGet2(String urlParam, Map<String, Object> params, String charset) {
//        StringBuffer resultBuffer = null;
//        // 构建请求参数
//        StringBuffer sbParams = new StringBuffer();
//        if (params != null && params.size() > 0) {
//            for (Entry<String, Object> entry : params.entrySet()) {
//                sbParams.append(entry.getKey());
//                sbParams.append("=");
//                sbParams.append(entry.getValue());
//                sbParams.append("&");
//            }
//        }
//        BufferedReader br = null;
//        try {
//            URL url = null;
//            if (sbParams != null && sbParams.length() > 0) {
//                url = new URL(urlParam + "?" + sbParams.substring(0, sbParams.length() - 1));
//            } else {
//                url = new URL(urlParam);
//            }
//            URLConnection con = url.openConnection();
//            // 设置请求属性
//            con.setRequestProperty("accept", "*/*");
//            con.setRequestProperty("connection", "Keep-Alive");
//            con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//            con.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//            // 建立连接
//            con.connect();
//            resultBuffer = new StringBuffer();
//            br = new BufferedReader(new InputStreamReader(con.getInputStream(), charset));
//            String temp;
//            while ((temp = br.readLine()) != null) {
//                resultBuffer.append(temp);
//            }
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (br != null) {
//                try {
//                    br.close();
//                } catch (IOException e) {
//                    br = null;
//                    throw new RuntimeException(e);
//                }
//            }
//        }
//        return resultBuffer.toString();
//    }
//
//    /**
//     * @Description:使用HttpClient发送post请求
//     * @author:liuyc
//     * @time:2016年5月17日 下午3:28:23
//     */
//    public static String httpClientPost(String urlParam, Map<String, Object> params, String charset) {
//        StringBuffer resultBuffer = null;
//        HttpClient client = new DefaultHttpClient();
//        HttpPost httpPost = new HttpPost(urlParam);
//        // 构建请求参数
//        List<NameValuePair> list = new ArrayList<NameValuePair>();
//        Iterator<Entry<String, Object>> iterator = params.entrySet().iterator();
//        while (iterator.hasNext()) {
//            Entry<String, Object> elem = iterator.next();
//            list.add(new BasicNameValuePair(elem.getKey(), String.valueOf(elem.getValue())));
//        }
//        BufferedReader br = null;
//        try {
//            if (list.size() > 0) {
//                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, charset);
//                httpPost.setEntity(entity);
//            }
//            HttpResponse response = client.execute(httpPost);
//            // 读取服务器响应数据
//            resultBuffer = new StringBuffer();
//            br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
//            String temp;
//            while ((temp = br.readLine()) != null) {
//                resultBuffer.append(temp);
//            }
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (br != null) {
//                try {
//                    br.close();
//                } catch (IOException e) {
//                    br = null;
//                    throw new RuntimeException(e);
//                }
//            }
//        }
//        return resultBuffer.toString();
//    }
//
//    /**
//     * @Description:使用HttpClient发送get请求
//     * @author:liuyc
//     * @time:2016年5月17日 下午3:28:56
//     */
//    public static String httpClientGet(String urlParam, Map<String, Object> params, String charset) {
//        StringBuffer resultBuffer = null;
//        HttpClient client = new DefaultHttpClient();
//        BufferedReader br = null;
//        // 构建请求参数
//        StringBuffer sbParams = new StringBuffer();
//        if (params != null && params.size() > 0) {
//            for (Entry<String, Object> entry : params.entrySet()) {
//                sbParams.append(entry.getKey());
//                sbParams.append("=");
//                try {
//                    sbParams.append(URLEncoder.encode(String.valueOf(entry.getValue()), charset));
//                } catch (UnsupportedEncodingException e) {
//                    throw new RuntimeException(e);
//                }
//                sbParams.append("&");
//            }
//        }
//        if (sbParams != null && sbParams.length() > 0) {
//            urlParam = urlParam + "?" + sbParams.substring(0, sbParams.length() - 1);
//        }
//        HttpGet httpGet = new HttpGet(urlParam);
//        try {
//            HttpResponse response = client.execute(httpGet);
//            // 读取服务器响应数据
//            br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
//            String temp;
//            resultBuffer = new StringBuffer();
//            while ((temp = br.readLine()) != null) {
//                resultBuffer.append(temp);
//            }
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (br != null) {
//                try {
//                    br.close();
//                } catch (IOException e) {
//                    br = null;
//                    throw new RuntimeException(e);
//                }
//            }
//        }
//        return resultBuffer.toString();
//    }
//
//    /**
//     * @Description:使用socket发送post请求
//     * @author:liuyc
//     * @time:2016年5月18日 上午9:26:22
//     */
//    public static String sendSocketPost(String urlParam, Map<String, Object> params, String charset) {
//        String result = "";
//        // 构建请求参数
//        StringBuffer sbParams = new StringBuffer();
//        if (params != null && params.size() > 0) {
//            for (Entry<String, Object> entry : params.entrySet()) {
//                sbParams.append(entry.getKey());
//                sbParams.append("=");
//                sbParams.append(entry.getValue());
//                sbParams.append("&");
//            }
//        }
//        Socket socket = null;
//        OutputStreamWriter osw = null;
//        InputStream is = null;
//        try {
//            URL url = new URL(urlParam);
//            String host = url.getHost();
//            int port = url.getPort();
//            if (-1 == port) {
//                port = 80;
//            }
//            String path = url.getPath();
//            socket = new Socket(host, port);
//            StringBuffer sb = new StringBuffer();
//            sb.append("POST " + path + " HTTP/1.1\r\n");
//            sb.append("Host: " + host + "\r\n");
//            sb.append("Connection: Keep-Alive\r\n");
//            sb.append("Content-Type: application/x-www-form-urlencoded; charset=utf-8 \r\n");
//            sb.append("Content-Length: ").append(sb.toString().getBytes().length).append("\r\n");
//            // 这里一个回车换行，表示消息头写完，不然服务器会继续等待
//            sb.append("\r\n");
//            if (sbParams != null && sbParams.length() > 0) {
//                sb.append(sbParams.substring(0, sbParams.length() - 1));
//            }
//            osw = new OutputStreamWriter(socket.getOutputStream());
//            osw.write(sb.toString());
//            osw.flush();
//            is = socket.getInputStream();
//            String line = null;
//            // 服务器响应体数据长度
//            int contentLength = 0;
//            // 读取http响应头部信息
//            do {
//                line = readLine(is, 0, charset);
//                if (line.startsWith("Content-Length")) {
//                    // 拿到响应体内容长度
//                    contentLength = Integer.parseInt(line.split(":")[1].trim());
//                }
//                // 如果遇到了一个单独的回车换行，则表示请求头结束
//            } while (!line.equals("\r\n"));
//            // 读取出响应体数据（就是你要的数据）
//            result = readLine(is, contentLength, charset);
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (osw != null) {
//                try {
//                    osw.close();
//                } catch (IOException e) {
//                    osw = null;
//                    throw new RuntimeException(e);
//                } finally {
//                    if (socket != null) {
//                        try {
//                            socket.close();
//                        } catch (IOException e) {
//                            socket = null;
//                            throw new RuntimeException(e);
//                        }
//                    }
//                }
//            }
//            if (is != null) {
//                try {
//                    is.close();
//                } catch (IOException e) {
//                    is = null;
//                    throw new RuntimeException(e);
//                } finally {
//                    if (socket != null) {
//                        try {
//                            socket.close();
//                        } catch (IOException e) {
//                            socket = null;
//                            throw new RuntimeException(e);
//                        }
//                    }
//                }
//            }
//        }
//        return result;
//    }
//
//    /**
//     * @Description:使用socket发送get请求
//     * @author:liuyc
//     * @time:2016年5月18日 上午9:27:18
//     */
//    public static String sendSocketGet(String urlParam, Map<String, Object> params, String charset) {
//        String result = "";
//        // 构建请求参数
//        StringBuffer sbParams = new StringBuffer();
//        if (params != null && params.size() > 0) {
//            for (Entry<String, Object> entry : params.entrySet()) {
//                sbParams.append(entry.getKey());
//                sbParams.append("=");
//                sbParams.append(entry.getValue());
//                sbParams.append("&");
//            }
//        }
//        Socket socket = null;
//        OutputStreamWriter osw = null;
//        InputStream is = null;
//        try {
//            URL url = new URL(urlParam);
//            String host = url.getHost();
//            int port = url.getPort();
//            if (-1 == port) {
//                port = 80;
//            }
//            String path = url.getPath();
//            socket = new Socket(host, port);
//            StringBuffer sb = new StringBuffer();
//            sb.append("GET " + path + " HTTP/1.1\r\n");
//            sb.append("Host: " + host + "\r\n");
//            sb.append("Connection: Keep-Alive\r\n");
//            sb.append("Content-Type: application/x-www-form-urlencoded; charset=utf-8 \r\n");
//            sb.append("Content-Length: ").append(sb.toString().getBytes().length).append("\r\n");
//            // 这里一个回车换行，表示消息头写完，不然服务器会继续等待
//            sb.append("\r\n");
//            if (sbParams != null && sbParams.length() > 0) {
//                sb.append(sbParams.substring(0, sbParams.length() - 1));
//            }
//            osw = new OutputStreamWriter(socket.getOutputStream());
//            osw.write(sb.toString());
//            osw.flush();
//            is = socket.getInputStream();
//            String line = null;
//            // 服务器响应体数据长度
//            int contentLength = 0;
//            // 读取http响应头部信息
//            do {
//                line = readLine(is, 0, charset);
//                if (line.startsWith("Content-Length")) {
//                    // 拿到响应体内容长度
//                    contentLength = Integer.parseInt(line.split(":")[1].trim());
//                }
//                // 如果遇到了一个单独的回车换行，则表示请求头结束
//            } while (!line.equals("\r\n"));
//            // 读取出响应体数据（就是你要的数据）
//            result = readLine(is, contentLength, charset);
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        } finally {
//            if (osw != null) {
//                try {
//                    osw.close();
//                } catch (IOException e) {
//                    osw = null;
//                    throw new RuntimeException(e);
//                } finally {
//                    if (socket != null) {
//                        try {
//                            socket.close();
//                        } catch (IOException e) {
//                            socket = null;
//                            throw new RuntimeException(e);
//                        }
//                    }
//                }
//            }
//            if (is != null) {
//                try {
//                    is.close();
//                } catch (IOException e) {
//                    is = null;
//                    throw new RuntimeException(e);
//                } finally {
//                    if (socket != null) {
//                        try {
//                            socket.close();
//                        } catch (IOException e) {
//                            socket = null;
//                            throw new RuntimeException(e);
//                        }
//                    }
//                }
//            }
//        }
//        return result;
//    }
//
//    /**
//     * @Description:读取一行数据，contentLe内容长度为0时，读取响应头信息，不为0时读正文
//     * @time:2016年5月17日 下午6:11:07
//     */
//    private static String readLine(InputStream is, int contentLength, String charset) throws IOException {
//        List<Byte> lineByte = new ArrayList<Byte>();
//        byte tempByte;
//        int cumsum = 0;
//        if (contentLength != 0) {
//            do {
//                tempByte = (byte) is.read();
//                lineByte.add(Byte.valueOf(tempByte));
//                cumsum++;
//            } while (cumsum < contentLength);// cumsum等于contentLength表示已读完
//        } else {
//            do {
//                tempByte = (byte) is.read();
//                lineByte.add(Byte.valueOf(tempByte));
//            } while (tempByte != 10);// 换行符的ascii码值为10
//        }
//
//        byte[] resutlBytes = new byte[lineByte.size()];
//        for (int i = 0; i < lineByte.size(); i++) {
//            resutlBytes[i] = (lineByte.get(i)).byteValue();
//        }
//        return new String(resutlBytes, charset);
//    }
//
//}